<?php
//公共数据接口
namespace app\index\controller;
use think\Db;
class Index extends Base{
	//首页数据
	public function index(){
		$user =$this->_user;
		$param=$this->_data;
		//返回数据 1：轮播图 2：公告 3：根据用户定位
	}
	//根据文章分类，获取文章列表
	public function article(){
		if(request()->isGet()){			//获取文章分类
			$rel=Db::name('articleCate')->field('id as cate_id,name')->where('status',1)->select();
		}else{
			$param=$this->_data;
			$map['status']=1;
			if(!empty($param['cate_id'])) $map['cate_id']=$param['cate_id'];
			$page=!empty($param['page']) ? $param['page'] : 1;
			$rel=Db::name('article')->where($map)->page($page,10)->select();
		}
		if(!$rel){
			return rel(-1,'无更多数据');
		}else{
			return rel(1,'获取数据成功',$rel);
		}
	}
	//家政。搬家。物业。家私
    public function serve(){
        $param = $this->_data;
        $cates=config('admin.serve');
        array_shift($cates);           //取出定义的第三方服务分类
        $cates=array_keys($cates);
        if(!isset($param['seve_cate']) || empty($param['seve_cate'])) return rel(-1,'服务分类不能为空');
        if(!in_array($param['seve_cate'],$cates)) return rel(-1,'分类参数无效');
        $page = !empty($param['page']) ? $param['page'] : 1;
        $map=[
            'del'  =>0,  //未删除
            'stat' =>1,  //显示状态
            'type' =>$param['seve_cate']
        ];
        $rel=Db::name('serve')
            ->page($page,10)
            ->where($map)
            ->select();
        if(!$rel){
            return rel(-1,'没有更多数据');
        }else{
            return rel(1,'获取数据成功',$rel);
        }
    }
	//获取轮播广告
	public function banners(){
		$map=[
			'ad_position_id' => 1,
			'closed'		 => 0
		];
		$rel=Db::name('ad')->field('id,title,images')->where($map)->order('orderby')->select();
		if(!$rel){
			return rel(-1,'暂无广告');
		}else{
			return rel(1,'获取轮播广告成功',$rel);
		}
	}
	//小程序授权登录
    public function login(){
    	$param=$this->_data;
    	$userObj=controller('common/UserLogic','Logic');
    	$rel=$userObj->login($param);
    	return $rel;
    }
    //绑定手机，初次插入用户信息
    public function register(){
    	$user=$this->_user;
    	$param=$this->_data;
    	$param['uid']=$user['id'];
    	$userObj=controller('common/UserLogic','Logic');
    	$rel=$userObj->register($param);
    	return $rel;
    }
    //更新用户微信数据
    public function update_user(){
    	$user=$this->_user;
    	$param=$this->_data;
    	$param['uid']=$user['id'];
    	$userObj=controller('common/UserLogic','Logic');
    	$rel=$userObj->update_user($param);
    	return $rel;
    }
    //获取用户信息
    public function get_user(){
    	$user=$this->_user;
    	$rel=[
    		'phone' => $user['phone'],
    		'type'	=> $user['type']
    	];
    	return rel(1,'获取用户数据成功',$rel);
    }
    //身份验证
    public function check_idcard(){
    	$user =$this->_user;
    	$param=$this->_data;
    	$val=validate('ApiV');
		if(!$val->scene('check_idcard')->check($param)) return rel(-1,$val->getError());
		$update=[
			'name'	=>$param['name'],
			'idcard'=>$param['idcard'],
			'idcard_img_a'=>$param['idcard_img_a']
		];
		$rel=Db::name('users')->where('id',$user['id'])->update($update);
		if(!$rel){
			return rel(-1,'提交失败，稍后重试');
		}else{
			return rel(1,'提交成功');
		}
    }
    //发送验证码短信
    public function sms(){
    	$user=$this->_user;
    	$param=$this->_data;
    	//暂时模拟发送短信
    	if(empty($param['phone']) || !check_mobile($param['phone'])) return rel(-1,'手机号码不能为空');
    	if(empty($param['sms_type'])) return rel(-1,'验证码类型不能为空'); //1:登录，2：修改手机号码 3：业主认证
    	
    	if($param['sms_type']==3){
    		if($user['type']==3) return rel(-1,'您已是业主，无需再次提交');
    		if($user['type']==1 && !empty($user['idcard'])) return rel(-1,'您的实名认证待审核');
    		if($user['type']!=2) return rel(-1,'请先实名认证');
    		if($user['phone']!=$param['phone']) return rel(-1,'该号码与注册号码不匹配');
    		
    		$ower=Db::name('applyOwer')->where('uid',$user['id'])->column('stat');
    		if(in_array(1,$ower)) return rel(-1,'您已申请，请等待回复');
    	}
    	
//  	$sms=Db::name('smsLog')->where(['phone'=>$])
    	$smscode =6666;
    	$exptime =config('base.expsmstime');
    	$content = "【联发科智能社区】尊敬的用户您好，您的短信验证码为：".$smscode.",感谢您的使用，祝您生活愉快！";
    	$insert=[
    		'phone'		=> $param['phone'],
    		'content' 	=> $content,
    		'smscode'  	=> $smscode,
    		'exp_time' 	=> time()+$exptime*60
    	];
		$rel = Db::name('smsLog')->insertGetId($insert);
		if(!$rel){
			return rel(-1,'发送失败，稍后重试');
		}else{
			return rel(1,'发送成功',$smscode);
//			$rel = $this->sendSmsByzk($phone,$content);			//通过发送短信函数，发送验证码
//			if($rel){
//				return rel(1,'发送成功',$verifyCode);
//			}else{
//				return rel(-1,'发送失败，稍后重试');
//			}
		}
    }
    //获取房源列表
    public function house_list(){
    	$param=$this->_data;
    	$map=[
    		'stat'  	=> 1,	//显示状态
    		'selled'    => 0,	//未被出租
    	];
    	$page = !empty($param['page']) ? $param['page'] : 1;
    	//位置筛选（待处理）
    	if(!empty($param['type'])) $map['type']=$param['type'];					//租赁方式。 1：整租 2：合租
    	if(!empty($param['a'])) $map['a']=$param['a'];							//几居室（卧室数量）
    	if(!empty($param['elevator'])) $map['elevator']=$param['elevator'];     //是否有电梯。1：电梯 2：无电梯
    	if(!empty($param['time_type'])) $map['time_type']=$param['time_type'];  //租期 。1：月租 2：季租 3：年租
    	if(!empty($param['direc'])) $map['direc']=$param['direc'];  			//朝向 。1：东 2：南 3：西 4：北
    	$space=1000;	//租金区间
    	if(!empty($param['price_space'])){
    		if($param['price_space']<=3){
    			$map['price']=['btween',[ ($param['price_space']-1)*$space, ($param['price_space']*$space) ]];
    		}else{
    			$map['price']=['>',$param['price_space']*$space];
    		}
    	}
    	$order= !empty($param['price_sort']) ? 'price '.$param['price_sort'] : 'price asc';	//默认根据租金升序排序
    	
    	$field='*';
    	if(!empty($param['lng']) && !empty($param['lat'])){			//如果有传递用户的经纬度
    		$field.=',(power(mod(abs(lng - '.$param['lng'].'),360),2) + power(abs(lat - '.$param['lat'].'),2)) * 1000000 AS distance';
    		if(!empty($param['distance_sort'])){
    			$order.=',distance asc';
    		}
    	}
    	
    	$rel=Db::name('house')
    	->field($field)
    	->page($page,10)
    	->order($order)
    	->select();
    	if(!$rel){
    		return rel(-1,'没有更多数据');
    	}else{
    		array_walk($rel,function(&$item){
    			$tag=[];
    			$tag['type']=$item['type'];
    			unset($item['type']);
    			$tag['abc']=['a'=>$item['a'],'b'=>$item['b'],'c'=>$item['c']];
    			unset($item['a']);
    			unset($item['b']);
    			unset($item['c']);
    			$tag['elevator']=$item['elevator'];
    			unset($item['elevator']);
    			$tag['area']=$item['area'];
    			unset($tag['area']);
    			$item['configs']=explode(',',$item['configs']);
    			$item['tag']=$tag;
    		});
    		return rel(1,'获取数据成功',$rel);
    	}
    }
    //获取单个房源详细信息
    public function house(){
    	$param=$this->_data;
    	if(!isset($param['house_id']) || empty($param['house_id'])) return rel(-1,'无效的房源主键');
    	$house=Db::name('house')->where(['id'=>$param['house_id'],'del'=>0])->find();
    	
    	if(!$house) return rel(-1,'无效的房源主键');
    	if($house['stat']==0) return rel(-1,'该房源已下架');
    	return rel(1,'获取房源数据成功',$house);
    }
    //获取用户的通知消息
    public function message(){
    	$user=$this->_user;
    	$param=$this->_data;
    	$map=[
    		'target_id'	=>$user['id'],
    		'stat'		=>1
    	];
    	$page=!empty($param['page']) ? $param['page'] : 1;
    	if(!empty($param['type'])){
    		$map['type']=$param['type'];			//消息类别1：看房通知    2：合同通知
    	}
    	
    	$rel=Db::name('message')->where($map)->page($page,10)->select();
    	if(!$rel){
    		return rel(-1,'没有更多数据');
    	}else{
    		return rel(1,'获取用户消息数据成功',$rel);
    	}
    }
    //获取消息详情，同时标记该数据为已读
    public function message_info(){
    	$user=$this->_user;
    	$param=$this->_data;
    	if(!isset($param['message_id']) || empty($param['message_id'])) return rel(-1,'消息主键无效');
    	
    	$messageObj=controller('common/Message','Logic');
    	$rel=$messageObj->message_info($param['message_id'],$user['id']);
    	return $rel;
    }
    //更新手机号
//  public function update_phone(){
//  	
//  }
}
